package tt.com.warehousemanager.service;

import com.baomidou.mybatisplus.extension.service.IService;
import tt.com.common.enums.StockEnum;
import tt.com.common.model.YxCommonWarehouseStockRecord;
import tt.com.common.util.AuditUtil;
import tt.com.common.util.PageUtil;

import java.math.BigDecimal;
import java.util.List;

/**
 * @author Czycka
 * @date 2022/8/18 17:22
 * @description 仓库服务类 接口
 */
public interface WarehouseStockRecordService extends IService<YxCommonWarehouseStockRecord> {

    /**
     * 添加记录
     *
     * @param record       记录实体类
     * @param createUserId 创建人id
     * @param stockType    记录类型
     * @return 受影响行数
     */
    Integer insertRecord(YxCommonWarehouseStockRecord record, String createUserId, StockEnum stockType);

    /**
     * 批量添加记录
     *
     * @param records      批量记录
     * @param createUserId 创建人id
     * @param stockType    记录类型
     * @return 受影响行数
     */
    Boolean insertOfBatch(List<YxCommonWarehouseStockRecord> records, String createUserId, StockEnum stockType);

    /**
     * 逻辑删除仓库记录
     *
     * @param stockId      要删除的仓库记录id
     * @param deleteUserId 删除人id
     * @return 数据不存在返回 -1 数据已被删除返回 -2
     */
    Integer deleteRecord(Long stockId, String deleteUserId);

    /**
     * 修改仓库记录
     *
     * @param stock        修改后的仓库记录
     * @param updateUserId 修改人id
     * @return 受影响行数
     */
    Integer updateRecord(YxCommonWarehouseStockRecord stock, String updateUserId);

    /**
     * 分页展示仓库寄
     *
     * @param pageUtil 当前页和每页数量
     * @return 分页后的数据
     */
    PageUtil showStockRecordByPage(PageUtil pageUtil);

    /**
     * 库存记录审核 审核后库存不可更改
     *
     * @param auditUtil 审核信息
     * @return 审核结果
     */
    Integer auditing(AuditUtil auditUtil);

    /**
     * 批量审核
     * @param auditUtils
     * @return
     */
    Boolean auditOfBatch(List<AuditUtil> auditUtils);



    /**
     * 查询当天出售金额
     *
     * @return 出售金额
     */
    BigDecimal showCostByToday();

    /**
     * 查询本周的出售金额
     *
     * @return 出售金额
     */
    BigDecimal showCostByWeek();

    /**
     * 查询本月出售金额
     *
     * @return 出售金额
     */
    BigDecimal showCostByMonth();

    /**
     * 查询今年出售金额
     *
     * @return 出售金额
     */
    BigDecimal showCostByYear();
}
